#!/bin/bash

set -e

# ========== 彩色输出定义 ==========
if [[ -t 1 ]]; then
  tty_red="\033[0;31m"
  tty_green="\033[0;32m"
  tty_yellow="\033[0;33m"
  tty_blue="\033[0;34m"
  tty_cyan="\033[0;36m"
  tty_purple="\033[0;35m"
  tty_bold="\033[1m"
  tty_reset="\033[0m"
else
  tty_red="" tty_green="" tty_yellow="" tty_blue="" tty_cyan="" tty_purple="" tty_bold="" tty_reset=""
fi

# 颜色定义 (用于 dotfiles 配置)
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[38;5;226m[!]'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
LIGHT_GRAY='\033[0;37m'
PURPLE='\033[0;35m'
BOLD='\033[1m'
RESET='\033[0m'

# ========== 彩色输出函数 ==========
function info() {
  echo -e "${tty_green}✅ $1${tty_reset}"
}

function warn() {
  echo -e "${tty_yellow}⚠️  $1${tty_reset}"
}

function error() {
  echo -e "${tty_red}❌ $1${tty_reset}"
}

function pause() {
  read -n1 -r -p "按任意键继续..." key
}

# 判断执行是否成功
JudgeSuccess() {
  if [ $? -ne 0 ]; then
    error "步骤失败: $1"
    exit 1
  else
    info "步骤成功"
  fi
}

# 分割线输出函数
print_separator() {
  printf "${LIGHT_GRAY}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}\n"
}

# ========== 环境检测函数 ==========
check_macos() {
  if [[ "$(uname)" != "Darwin" ]]; then
    error "本脚本仅支持 macOS 系统"
    exit 1
  fi
  info "系统检测通过：macOS"
}

check_dependencies() {
  echo -e "${tty_blue}🔍 检查系统依赖...${tty_reset}"
  
  # 检查 git
  if ! command -v git >/dev/null 2>&1; then
    warn "Git 未安装，正在安装 Command Line Tools..."
    echo -e "${tty_yellow}请在弹出的系统对话框中点击"安装"按钮${tty_reset}"
    xcode-select --install
    echo -e "${tty_yellow}安装完成后请重新运行此脚本${tty_reset}"
    exit 0
  fi
  
  # 检查 curl
  if ! command -v curl >/dev/null 2>&1; then
    error "缺少 curl 工具，请先安装"
    exit 1
  fi
  
  info "依赖检查完成"
}

check_git_proxy() {
  git_https_proxy=$(git config --global https.proxy 2>/dev/null || echo "")
  git_http_proxy=$(git config --global http.proxy 2>/dev/null || echo "")
  
  if [[ -n "$git_https_proxy" || -n "$git_http_proxy" ]]; then
    warn "检测到 Git 代理设置，如遇问题请清除："
    echo -e "${tty_cyan}    git config --global --unset https.proxy${tty_reset}"
    echo -e "${tty_cyan}    git config --global --unset http.proxy${tty_reset}"
    echo
  fi
}

check_existing_brew() {
  if command -v brew >/dev/null 2>&1; then
    warn "检测到已安装的 Homebrew"
    
    echo -e "${tty_cyan}请选择处理方式：${tty_reset}"
    echo "1. 跳过安装，直接配置镜像源"
    echo "2. 备份并重新安装"
    echo "3. 退出脚本"
    
    read -rp "请输入选项 (1-3): " choice
    case $choice in
      1)
        info "跳过 Homebrew 安装，准备配置镜像源"
        return 1
        ;;
      2)
        backup_existing_brew
        remove_existing_brew
        return 0
        ;;
      3)
        echo -e "${tty_cyan}已退出安装${tty_reset}"
        exit 0
        ;;
      *)
        error "无效选项，退出安装"
        exit 1
        ;;
    esac
  fi
  return 0
}

backup_existing_brew() {
  echo -e "${tty_blue}🔄 备份现有 Homebrew...${tty_reset}"
  
  backup_dir="$HOME/Desktop/Homebrew_Backup_$(date +%Y%m%d_%H%M%S)"
  mkdir -p "$backup_dir"
  
  # 检测架构并备份对应目录
  arch=$(uname -m)
  if [[ "$arch" == "arm64" ]]; then
    brew_path="/opt/homebrew"
  else
    brew_path="/usr/local"
  fi
  
  if [[ -d "$brew_path" ]]; then
    cp -rf "$brew_path" "$backup_dir/" 2>/dev/null || true
    info "备份完成：$backup_dir"
  fi
}

remove_existing_brew() {
  echo -e "${tty_blue}🗑️  移除现有 Homebrew...${tty_reset}"
  
  # 执行官方卸载脚本
  /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)" || true
  
  info "旧版本清理完成"
}

# ========== 镜像源选择 ==========
choose_mirror() {
  echo -e "${tty_green}🌍 请选择 Homebrew 安装源：${tty_reset}"
  echo
  echo -e "${tty_cyan}1.${tty_reset} 官方源（GitHub，适合网络条件好的用户）"
  echo -e "${tty_cyan}2.${tty_reset} 中科大源（推荐）"
  echo -e "${tty_cyan}3.${tty_reset} 清华大学源"
  echo -e "${tty_cyan}4.${tty_reset} 上海交通大学源"
  echo -e "${tty_cyan}5.${tty_reset} 阿里巴巴源"
  echo
  
  read -rp "请输入选项 (1-5): " choice
  case $choice in
    1)
      install_url="https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh"
      bottle_domain=""
      core_git=""
      brew_git=""
      source_name="官方源"
      ;;
    2)
      install_url="https://mirrors.ustc.edu.cn/misc/brew-install.sh"
      bottle_domain="https://mirrors.ustc.edu.cn/homebrew-bottles"
      core_git="https://mirrors.ustc.edu.cn/homebrew-core.git"
      brew_git="https://mirrors.ustc.edu.cn/brew.git"
      source_name="中科大源"
      ;;
    3)
      install_url="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/install.git"
      bottle_domain="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"
      core_git="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"
      brew_git="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
      source_name="清华大学源"
      ;;
    4)
      install_url="https://mirror.sjtu.edu.cn/homebrew/install.sh"
      bottle_domain="https://mirror.sjtu.edu.cn/homebrew-bottles"
      core_git="https://mirror.sjtu.edu.cn/git/homebrew/homebrew-core.git"
      brew_git="https://mirror.sjtu.edu.cn/git/homebrew/brew.git"
      source_name="上海交通大学源"
      ;;
    5)
      install_url="https://gitee.com/Homebrew2/install/raw/master/install.sh"
      bottle_domain="https://mirrors.aliyun.com/homebrew/homebrew-bottles"
      core_git="https://mirrors.aliyun.com/homebrew/homebrew-core.git"
      brew_git="https://mirrors.aliyun.com/homebrew/brew.git"
      source_name="阿里巴巴源"
      ;;
    *)
      warn "无效选项，使用默认中科大源"
      install_url="https://mirrors.ustc.edu.cn/misc/brew-install.sh"
      bottle_domain="https://mirrors.ustc.edu.cn/homebrew-bottles"
      core_git="https://mirrors.ustc.edu.cn/homebrew-core.git"
      brew_git="https://mirrors.ustc.edu.cn/brew.git"
      source_name="中科大源"
      ;;
  esac
  
  info "已选择：$source_name"
}

# ========== 配置环境变量 ==========
configure_environment() {
  echo -e "${tty_blue}⚙️  配置环境变量...${tty_reset}"
  
  # 确定配置文件
  case "$SHELL" in
    */bash*)
      if [[ -r "$HOME/.bash_profile" ]]; then
        profile="$HOME/.bash_profile"
      else
        profile="$HOME/.profile"
      fi
      ;;
    */zsh*)
      profile="$HOME/.zprofile"
      ;;
    *)
      profile="$HOME/.profile"
      ;;
  esac
  
  info "使用配置文件：$profile"
  
  # 清理旧配置（标记为 #homebrew-cn）
  if [[ -f "$profile" ]]; then
    sed -i '' '/#homebrew-cn/d' "$profile" 2>/dev/null || true
  fi
  
  # 写入新配置
  echo "" >> "$profile"
  echo "# Homebrew 环境配置 #homebrew-cn" >> "$profile"
  echo "eval \"\($brew_prefix/bin/brew shellenv\)\" #homebrew-cn" >> "$profile"
  
  # 如果选择了国内源，配置镜像
  if [[ -n "$bottle_domain" ]]; then
    echo "export HOMEBREW_BOTTLE_DOMAIN=\"$bottle_domain\" #homebrew-cn" >> "$profile"
  fi
  
  if [[ -n "$core_git" ]]; then
    echo "export HOMEBREW_CORE_GIT_REMOTE=\"$core_git\" #homebrew-cn" >> "$profile"
  fi
  
  if [[ -n "$brew_git" ]]; then
    echo "export HOMEBREW_BREW_GIT_REMOTE=\"$brew_git\" #homebrew-cn" >> "$profile"
  fi
  
  JudgeSuccess "环境变量配置"
  
  # 立即加载环境变量
  source "$profile" 2>/dev/null || true
  export PATH="$brew_prefix/bin:$PATH"
}

# ========== 验证安装 ==========
verify_installation() {
  echo -e "${tty_blue}🔍 验证安装结果...${tty_reset}"
  
  # 等待几秒让环境变量生效
  sleep 2
  
  if command -v brew >/dev/null 2>&1; then
    brew_version=$(brew --version | head -n1)
    info "安装成功！$brew_version"
    
    # 显示配置信息
    echo -e "${tty_cyan}📋 当前配置：${tty_reset}"
    echo "  安装路径: $brew_prefix"
    echo "  镜像源: $source_name"
    if [[ -n "$bottle_domain" ]]; then
      echo "  下载源: $bottle_domain"
    fi
    
  else
    error "安装验证失败，请检查上述错误信息"
    exit 1
  fi
}

# 1. 允许所有来源
function allow_apps_anywhere() {
  sudo spctl --master-disable
  # 关闭自动重新加载
  # 这里需要提示用户，是否关闭自动重新加载
  read -p '是否关闭自动重新加载？[y/N]: ' yn
  if [[ "$yn" =~ ^[Yy]$ ]]; then
    sudo defaults write /Library/Preferences/com.apple.security GKAutoRearm -bool false
  else
    info "跳过自动重新加载"
  fi
  # 查看状态是否关闭
  status=$(spctl --status)
  info "当前状态：$status"
  if echo "$status" | grep -q "assessments disabled"; then
    info "已关闭『任何来源』应用支持"
  else
    warn "已开启『任何来源』应用支持"
  fi
}

# 2. 安装 Homebrew (增强版 - 支持多镜像源)
function install_homebrew() {
  # 环境检测
  check_macos
  check_dependencies
  check_git_proxy
  
  # 检查现有安装
  skip_install=false
  if ! check_existing_brew; then
    skip_install=true
  fi
  
  # 选择镜像源
  choose_mirror
  
  # 安装 Homebrew（如果需要）
  if [[ "$skip_install" == false ]]; then
    echo -e "${tty_blue}🚀 开始安装 Homebrew (使用 $source_name)...${tty_reset}"
    
    # 检测架构
    arch=$(uname -m)
    if [[ "$arch" == "arm64" ]]; then
      brew_prefix="/opt/homebrew"
      info "检测到 Apple Silicon (M1/M2) 架构"
    elif [[ "$arch" == "x86_64" ]]; then
      brew_prefix="/usr/local"
      info "检测到 Intel x86_64 架构"
    else
      error "未知架构: $arch"
      exit 1
    fi
    
    # 执行安装
    if [[ "$source_name" == "官方源" ]]; then
      /bin/bash -c "$(curl -fsSL $install_url)"
    else
      # 对于国内镜像，可能需要特殊处理
      if [[ "$source_name" == "清华大学源" ]]; then
        # 清华源需要 git clone 方式
        git clone --depth=1 $install_url brew-install-temp
        /bin/bash brew-install-temp/install.sh
        rm -rf brew-install-temp
      else
        /bin/bash -c "$(curl -fsSL $install_url)"
      fi
    fi
    
    JudgeSuccess "Homebrew 安装"
  else
    info "跳过 Homebrew 安装"
    # 检测已安装的架构
    arch=$(uname -m)
    if [[ "$arch" == "arm64" ]]; then
      brew_prefix="/opt/homebrew"
    else
      brew_prefix="/usr/local"
    fi
  fi
  
  # 配置环境变量
  configure_environment
  
  # 验证安装
  verify_installation
  
  # 显示使用指南
  echo
  echo -e "${tty_green}🎉 Homebrew 安装完成！${tty_reset}"
  echo
  echo -e "${tty_cyan}📚 常用命令：${tty_reset}"
  echo "  查看版本: ${tty_bold}brew --version${tty_reset}"
  echo "  搜索软件: ${tty_bold}brew search <软件名>${tty_reset}"
  echo "  安装软件: ${tty_bold}brew install <软件名>${tty_reset}"
  echo "  卸载软件: ${tty_bold}brew uninstall <软件名>${tty_reset}"
  echo "  更新列表: ${tty_bold}brew update${tty_reset}"
  echo "  升级软件: ${tty_bold}brew upgrade${tty_reset}"
  echo "  清理缓存: ${tty_bold}brew cleanup${tty_reset}"
  echo
  echo -e "${tty_yellow}💡 提示：${tty_reset}"
  echo "  - 环境变量已配置到 $profile"
  echo "  - 如果命令无法使用，请重启终端或执行: ${tty_bold}source $profile${tty_reset}"
  echo "  - 更多帮助: ${tty_bold}brew help${tty_reset}"
  echo
}

# 3. 安装 Fira Code 字体
function install_fira_code() {
  brew tap homebrew/cask-fonts
  brew install --cask font-fira-code
  info "已安装 Fira Code 字体"
}

# 4. 安装 iTerm2
function install_iterm2() {
  brew install --cask iterm2
  info "已安装 iTerm2"
  read -p '是否导入李雪松专用 iTerm2 配置（dotfiles）？[y/N]: ' yn
  if [[ "$yn" =~ ^[Yy]$ ]]; then
    config_iterm2
  else
    info "跳过 iTerm2 配置导入"
  fi
}

# 5. 配置 iTerm2 设置（整合 setup_dotfiles.sh 的功能）
function config_iterm2() {
  printf "${BOLD}${PURPLE}🛠️  开始 dotfiles 安装...${RESET}\n\n"

  # ========= 安装 oh-my-zsh（如未安装） =========
  print_separator
  if [ ! -d "$HOME/.oh-my-zsh" ]; then
    printf "${YELLOW}⌛️ 安装 oh-my-zsh...${RESET}\n"
    RUNZSH=no KEEP_ZSHRC=yes sh -c "$(curl -fsSL https://install.ohmyz.sh/)"
  else
    printf "${GREEN}✅ oh-my-zsh 已安装，跳过安装。${RESET}\n"
  fi

  # ========= 安装 zsh-autosuggestions =========
  print_separator
  if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
    printf "${YELLOW}⌛️ 安装 oh-my-zsh 自动提示历史路径的插件：zsh-autosuggestions...${RESET}\n"
    git clone https://github.com/zsh-users/zsh-autosuggestions.git "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions"
  else
    printf "${GREEN}✅ 自动提示历史路径的插件 zsh-autosuggestions 已安装，跳过安装。${RESET}\n"
  fi

  # ========= 安装 zsh-syntax-highlighting =========
  print_separator
  if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
    printf "${YELLOW}⌛️ 安装 oh-my-zsh 语法高亮的插件：zsh-syntax-highlighting...${RESET}\n"
    git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting"
  else
    printf "${GREEN}✅ 语法高亮的插件 zsh-syntax-highlighting 已安装，跳过安装。${RESET}\n"
  fi

  # ========= 安装 agnoster 主题 =========
  print_separator
  if [ ! -d "$HOME/.oh-my-zsh/themes/agnoster" ]; then
    printf "${YELLOW}⌛️ 安装 oh-my-zsh 主题：agnoster...${RESET}\n"
    git clone https://github.com/agnoster/agnoster-zsh-theme.git "$HOME/.oh-my-zsh/themes/agnoster"
  else
    printf "${GREEN}✅ agnoster 主题已安装，跳过安装。${RESET}\n"
  fi

  # ========= 应用 .zshrc =========
  print_separator
  printf "${BOLD}${BLUE}正在下载 .coderxslee.zshrc 到 $HOME/.coderxslee.zshrc ...${RESET}\n"
  curl -fsSL https://gitee.com/coderxslee/macinit/raw/master/dotfiles/zsh/.coderxslee.zshrc -o "$HOME/.coderxslee.zshrc"
  printf "${GREEN}✅ 已下载 .coderxslee.zshrc 到 $HOME/.coderxslee.zshrc${RESET}\n"

  printf "${BOLD}${BLUE}正在将 .coderxslee.zshrc 文件加载到 ~/.zshrc 中...${RESET}\n"
  # 检查是否已经添加过，避免重复添加
  if ! grep -q "source ~/.coderxslee.zshrc" "$HOME/.zshrc" 2>/dev/null; then
    printf '\n# 加载个人自定义配置\n[[ -f ~/.coderxslee.zshrc ]] && source ~/.coderxslee.zshrc\n' >> "$HOME/.zshrc"
    printf "${GREEN}✅ 已将 .coderxslee.zshrc 文件加载到 ~/.zshrc 中${RESET}\n"
  else
    printf "${GREEN}✅ .coderxslee.zshrc 已经在 ~/.zshrc 中，跳过添加${RESET}\n"
  fi

  # ========= iTerm2 配置 =========
  print_separator
  printf "${BOLD}${BLUE}🧩 配置 iTerm2 偏好设置路径...${RESET}\n"
  ITERM2_PREFS_DIR="$HOME/Library/Preferences"
  mkdir -p "$ITERM2_PREFS_DIR"
  if [ -f "$ITERM2_PREFS_DIR/com.googlecode.iterm2.plist" ]; then
    printf "${YELLOW}🔄 备份原有 iTerm2 偏好设置...${RESET}\n"
    cp "$ITERM2_PREFS_DIR/com.googlecode.iterm2.plist" "$ITERM2_PREFS_DIR/com.googlecode.iterm2.plist.bak.$(date +%Y%m%d%H%M%S)"
  fi
  curl -fsSL https://gitee.com/coderxslee/macinit/raw/master/dotfiles/iterm2/com.googlecode.iterm2.plist -o "$ITERM2_PREFS_DIR/com.googlecode.iterm2.plist"
  printf "${GREEN}✅ iTerm2 配置完成（请稍后手动重启 iTerm2 应用）${RESET}\n"

  # ========= 修改系统 Terminal 终端 的样式 =========
  print_separator
  printf "${BOLD}${BLUE}正在下载并导入终端主题 Grass coderxslee.terminal 到 Terminal.app...${RESET}\n"
  
  # 创建临时目录
  TEMP_DIR=$(mktemp -d)
  TERMINAL_THEME_PATH="$TEMP_DIR/Grass coderxslee.terminal"
  
  # 下载 Terminal 主题文件
  curl -fsSL "https://gitee.com/coderxslee/macinit/raw/master/dotfiles/terminal/Grass%20coderxslee.terminal" -o "$TERMINAL_THEME_PATH"
  
  if [ -f "$TERMINAL_THEME_PATH" ]; then
    printf "${BOLD}${BLUE}正在导入终端主题到 Terminal.app...${RESET}\n"
    open "$TERMINAL_THEME_PATH"
    sleep 3
    printf "${BOLD}${BLUE}正在设置 Grass coderxslee 为默认终端主题...${RESET}\n"
    osascript <<EOD
    tell application "Terminal"
      set default settings to settings set "Grass coderxslee"
      set startup settings to settings set "Grass coderxslee"
    end tell
EOD
    printf "${GREEN}✅ 已成功导入并设置 Grass coderxslee 为默认终端主题！${RESET}\n"
    
    # 清理临时文件
    rm -rf "$TEMP_DIR"
  else
    printf "${RED}❌ 下载主题文件失败，跳过终端主题导入。${RESET}\n"
  fi

  # ========= 完成 =========
  print_separator
  printf "${BOLD}${PURPLE}🎉 dotfiles 安装完成！${RESET}\n"
  printf "${CYAN}👉 请现在手动重启 iTerm2，以应用新配置。${RESET}\n"
  
  info "已设置 iTerm2 使用李雪松专用配置"
}

# 6. 安装开发环境（整合 install_dev.sh 的功能）
function install_dev() {
  function dev_show_banner() {
    echo ""
    echo -e "╭──────────────────────────────────────────────╮"
    echo -e "│         \033[1;34m👋 Mac 开发环境安装菜单\033[0m              │"
    echo -e "╰──────────────────────────────────────────────╯"
    echo "作者: 李雪松"
    echo "版本: 1.0.0"
    echo ""
  }

  # 开发工具安装函数
  function install_fvm() {
    # 询问是否安装 flutter 环境
    read -p "是否在安装完成后，自动安装 flutter 环境？[y/N]: " install_flutter
    brew tap leoafarias/fvm
    brew install fvm
    if fvm --version &> /dev/null; then
      info "✅ fvm 安装成功"
      if [[ "$install_flutter" =~ ^[Yy]$ ]]; then
        fvm install stable
        if fvm flutter --version &> /dev/null; then
          info "✅ flutter 安装成功"
          fvm global stable
        else
          error "❌ flutter 安装失败"
        fi
      else
        info "✅ 跳过 flutter 安装"
      fi
    else
      error "❌ fvm 安装失败"
    fi
  }

  function install_nvm() {
    brew install nvm
    if nvm --version &> /dev/null; then
      info "✅ nvm 安装成功"
    else
      error "❌ nvm 安装失败"
    fi
  }

  function install_jenv() {
    brew install jenv
    if jenv --version &> /dev/null; then
      info "✅ jenv 安装成功"
    else
      error "❌ jenv 安装失败"
    fi
  }

  function install_uv() {
    brew install uv
    if uv --version &> /dev/null; then
      info "✅ uv 安装成功"
    else
      error "❌ uv 安装失败"
    fi
  }

  function install_pyenv() {
    brew install pyenv
    if pyenv --version &> /dev/null; then
      info "✅ pyenv 安装成功"
    else
      error "❌ pyenv 安装失败"
    fi
  }

  function install_android_jdk() {
    brew install --cask android-studio
    if [ $? -eq 0 ]; then
      info "✅ Android Studio 安装成功（包含 JDK）"
    else
      error "❌ Android Studio 安装失败"
    fi
  }

  function install_java_jdk() {
    local java_version=""
    while true; do
      echo "请选择要安装的 Java JDK 版本："
      echo "1. Java 8"
      echo "2. Java 11"
      echo "3. Java 17 (默认)"
      echo "4. Java 21"
      read -p "请输入序号（1-4，回车默认3）: " version_choice
      case $version_choice in
        1) java_version="8"; break ;;
        2) java_version="11"; break ;;
        3|"") java_version="17"; break ;;
        4) java_version="21"; break ;;
        *) echo "无效输入，请重新选择。" ;;
      esac
    done
    brew install --cask "temurin@$java_version"
    if java -version &> /dev/null; then
      info "✅ Java JDK $java_version 安装成功"
    else
      error "❌ Java JDK 安装失败"
    fi
  }

  function install_cocoapods() {
    brew install cocoapods
    if pod --version &> /dev/null; then
      info "✅ cocoapods 安装成功"
    else
      error "❌ cocoapods 安装失败"
    fi
  }

  function install_android_sdk() {
    brew install android-sdk
    brew install android-platform-tools
    brew install --cask android-commandlinetools
    if [ -d "/usr/local/share/android-sdk" ] || [ -d "/opt/homebrew/share/android-sdk" ]; then
      info "✅ Android SDK 安装成功"
      # 软链接到默认目录
      ln -s /usr/local/share/android-sdk ~/Library/Android/sdk
      ln -s /usr/local/share/android-platform-tools ~/Library/Android/sdk
      ln -s /usr/local/share/android-commandlinetools ~/Library/Android/sdk
      info "✅ 已将 Android SDK 软链接到 ~/Library/Android/sdk"
      info "✅ 已将 Android Platform Tools 软链接到 ~/Library/Android/sdk"
      info "✅ 已将 Android Command Line Tools 软链接到 ~/Library/Android/sdk"
      info "✅ 常用开发工具，可直接使用。"
    else
      error "❌ Android SDK 安装失败"
    fi
    if command -v sdkmanager &> /dev/null; then
      info "✅ sdkmanager 可用"
    else
      warn "⚠️  sdkmanager 未检测到，请检查 PATH 设置或重启终端"
    fi
    if command -v adb &> /dev/null; then
      info "✅ adb 可用"
    else
      warn "⚠️  adb 未检测到，请检查 PATH 设置或重启终端"
    fi
  }

  function install_dev_all() {
    install_fvm
    install_nvm
    install_android_sdk
    install_android_jdk
    install_java_jdk
    install_jenv
    install_cocoapods
    install_uv
    install_pyenv
    info "已安装所有开发环境"
  }

  # 开发环境菜单
  function dev_main_menu() {
    dev_show_banner
    echo -e "\033[1;34m1. 🚀 安装 fvm\033[0m"
    echo -e "\033[1;32m2. 🌱 安装 nvm\033[0m"
    echo -e "\033[1;32m3. 🤖 安装 Android SDK 开发环境\033[0m"
    echo -e "\033[1;32m4. 🤖 安装 Android Studio\033[0m"
    echo -e "\033[1;32m5. ☕ 安装 Java JDK\033[0m"
    echo -e "\033[38;5;130m6. ☕ 安装 Java 版本管理 jenv\033[0m"
    echo -e "\033[1;32m7. 🍭 安装 cocoapods\033[0m"
    echo -e "8. \033[1;33m⚡\033[0m \033[38;5;93m安装 uv\033[0m"
    echo -e "\033[38;5;202m9. 🐍 安装 pyenv\033[0m"
    echo -e "\033[1;36m10. 🛠️  安装全部\033[0m"
    echo -e "\033[1;31m0. ❌ 返回主菜单\033[0m"
    echo ""

    read -p "请选择你要执行的操作（支持多个，例如 13）: " options
    for opt in $(echo "$options" | fold -w1); do
      case $opt in
        1) install_fvm && pause ;;
        2) install_nvm && pause ;;
        3) install_android_sdk && pause ;;
        4) install_android_jdk && pause ;;
        5) install_java_jdk && pause ;;
        6) install_jenv && pause ;;
        7) install_cocoapods && pause ;;
        8) install_uv && pause ;;
        9) install_pyenv && pause ;;
        10) install_dev_all && pause ;;
        0) return ;;
        *) error "未知选项: $opt" ;;
      esac
    done
  }

  # 启动开发环境菜单
  dev_main_menu
}

show_banner() {
  echo ""
  echo -e "╭──────────────────────────────────────────────╮"
  echo -e "│         \033[1;34m👋 欢迎使用 Mac 初始化脚本\033[0m           │"
  echo -e "╰──────────────────────────────────────────────╯"
  echo "作者: 李雪松"
  echo "版本: 1.0.0"
  echo ""
}

# 主菜单
function main_menu() {
  clear
  show_banner
  echo -e "\033[1;34m📦 Mac 初始化菜单：\033[0m"
  echo ""
  echo -e "\033[1;33m1. 🛡️  安全性与隐私，允许所有来源\033[0m"
  echo -e "\033[1;32m2. 🍺 安装 Homebrew（支持多镜像源选择）\033[0m"
  echo -e "\033[38;5;135m3. 🔤 安装 Fira Code 字体 （程序员专用字体）\033[0m"
  echo -e "\033[1;36m4. 💻 安装 iTerm2 最新版\033[0m"
  echo -e "\033[1;34m5. 🎨 配置 iTerm2 主题样式和设置（从 dotfiles 目录导入）\033[0m"
  echo -e "\033[38;5;208m6. 🛠️  安装开发环境\033[0m"
  echo -e "\033[1;31m0. ❌ 退出\033[0m"
  echo ""

  read -p "请选择你要执行的操作（支持多个，例如 13）: " options
  for opt in $(echo "$options" | fold -w1); do
    case $opt in
      1) allow_apps_anywhere && pause ;;
      2) install_homebrew && pause ;;
      3) install_fira_code && pause ;;
      4) install_iterm2 && pause ;;
      5) config_iterm2 && pause ;;
      6) install_dev && pause ;;
      0) exit 0 ;;
      *) error "未知选项: $opt" ;;
    esac
  done
}

# 启动菜单
main_menu